在实际分析中, 往往有多个自变量决定一个因变量。多元线性回归方程如下: $$ \boldsymbol{Y}=\boldsymbol{X} \boldsymbol{\beta}+\boldsymbol{\varepsilon} $$ 该方程用矩阵形式表示, $\boldsymbol{Y}$ 是应变量的观察值, 是 $n$ 维列向量; $\boldsymbol{X}$ 是 $p$ 维自变量的数值, 考虑加上常数项, $\boldsymbol{X}$ 是 $n \times(p+1)$ 的矩阵; $\boldsymbol{\beta}$ 是 $(p+1)$ 维的系数列向量。可以通过矩阵 运算得到系数 $\boldsymbol{\beta}$ 的计算公式, 但手工计算是很困难的。
在R语言中仍然使用lm()
函数进行分析。
例 使用
birthwt
数据集, 研究新生儿体重的影响因素, 并根据这些因素的数值进行体重预测。
library(MASS)
data(birthwt)
birthwt.lm <- lm(bwt~age+lwt+as.factor(race)+smoke+ptl+ht+ui+ftv,data=birthwt)
summary(birthwt.lm)
结果
Call:
lm(formula = bwt ~ age + lwt + as.factor(race) + smoke + ptl +
ht + ui + ftv, data = birthwt)
Residuals:
Min 1Q Median 3Q Max
-1825.26 -435.21 55.91 473.46 1701.20
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2927.962 312.904 9.357 < 2e-16 ***
age -3.570 9.620 -0.371 0.711012
lwt 4.354 1.736 2.509 0.013007 *
as.factor(race)2 -488.428 149.985 -3.257 0.001349 **
as.factor(race)3 -355.077 114.753 -3.094 0.002290 **
smoke -352.045 106.476 -3.306 0.001142 **
ptl -48.402 101.972 -0.475 0.635607
ht -592.827 202.321 -2.930 0.003830 **
ui -516.081 138.885 -3.716 0.000271 ***
ftv -14.058 46.468 -0.303 0.762598
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 650.3 on 179 degrees of freedom
Multiple R-squared: 0.2427, Adjusted R-squared: 0.2047
F-statistic: 6.376 on 9 and 179 DF, p-value: 7.891e-08
绘制结果:
par(mfrow = c(2,2))
plot(birthwt.lm)
回归模型为 bwt $\sim$ age $+\mathrm{lwt}+\mathrm{as}$.factor (race) $+$ smoke $+\mathrm{ptl}+\mathrm{ht}+\mathrm{ui}+\mathrm{ftv}$, 研究新生儿 体重 bwt 与母亲年龄 (age)、种族 (race) 等因素的影响, 在设计该模型时不一定包括全部变量, 有些因素的效应要大些, 而有些因素对体重没有影响, 因此因素变量的选择是个有挑战 性的问题, 也是对模型进行评价的问题。在本例中, 与新生儿体重相关的因素有种族 (race)、吸烟状态 (smoke)、高吕压史 (ht)、子宫行为 (ui)、母亲怀孕前体重 (lwt) 等, 它们的采样数据分析结果有统计学显著性,该结果与 anova(birthwt.lm)的结果是一致的。在该线性模型中还可以考虑将因素的交互作用加人, 类似用多因素方差分析构建线性模型。模型 评价用 R-squared: $0.2427$, Adjusted R-squared: $0.2047$ 的指标, 此外还可以使用 AIC (Akaike's Information Criterion)、BIC (Bayesian Information Criterion), 该例使用的 summary() 函数没有提供这两个指标。
对模型拟合结果进行作图得到,考察了误差 (residuals) 的分布情况, 从这些图可以判断该模型的合理性, 以及是否存在异常值或杜杆率点, 在本例中第 $226,188,16$ 等样本 点对结果的影响较大, 可以考虑去除这些点后再进行回归分析, 得到更合理的模型。
使用 factor()函数为分类变量c创建哑变量, 例如, 将变量 race 编码为 $1,2,3$, 分别表予 3 类, 在分析结果中出现 factor (race)1、factor(race) 2
两个新变量。在回归模型中有两个哑变量表示 3 个分类, 可以使用relevel()
命令选择参考类型。
摘自:
library(MASS)
data(birthwt)
birthwt.lm <- lm(bwt~age+lwt+as.factor(race)+smoke+ptl+ht+ui+ftv,data=birthwt)
summary(birthwt.lm)
Call: lm(formula = bwt ~ age + lwt + as.factor(race) + smoke + ptl + ht + ui + ftv, data = birthwt) Residuals: Min 1Q Median 3Q Max -1825.26 -435.21 55.91 473.46 1701.20 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 2927.962 312.904 9.357 < 2e-16 *** age -3.570 9.620 -0.371 0.711012 lwt 4.354 1.736 2.509 0.013007 * as.factor(race)2 -488.428 149.985 -3.257 0.001349 ** as.factor(race)3 -355.077 114.753 -3.094 0.002290 ** smoke -352.045 106.476 -3.306 0.001142 ** ptl -48.402 101.972 -0.475 0.635607 ht -592.827 202.321 -2.930 0.003830 ** ui -516.081 138.885 -3.716 0.000271 *** ftv -14.058 46.468 -0.303 0.762598 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 650.3 on 179 degrees of freedom Multiple R-squared: 0.2427, Adjusted R-squared: 0.2047 F-statistic: 6.376 on 9 and 179 DF, p-value: 7.891e-08
png("images/r0901.png")
par(mfrow = c(2,2))
plot(birthwt.lm)
dev.off()
help(png)